Jakub Kosterna - pd 1

Warsztaty Badawcze 2021: XAI-1

0. Wczytanie pakietu i przygotowanie zbioru

Ku analizie nowo poznanych narzędzi, pod lupę wezmę zbiór analizowany w części zespołowej - **Red Wine Quality**.

1. Wyliczanie predykcji modelu dla wybranej obserwacji

Dla odmiany dokonam klasyfikacji binarnej z pomocą domyślnego Support Vector Machine.

Wynik oczywiście nieco gorszy od rewelacyjnego XGBoost.

Przyjrzyjmy się 32. obserwacji.

2. Demompozycja predykcji modelu dla jednej obserwacji

Break Down

Zainicjujmy nasz explainer (wytłumaczator?).

Wpierw uruchommy funkcję predict_parts() z domyślnymi parametrami. Dostaniemy w ten sposób standardowy break down.

Wszystko fajnie, ale... czemu niektóre wiersze odpowiadają za pary kolumn??

Okazuje się, ża pakiet Dalex w przypadku wykrycia pewnych istotnych interakcji między kolumnami, dla niektórych wywołań łączy je w pary i ukazuje wytłumaczenie, demonstrując je jako jedność. Tak oto w tym wypadku mamy styczność z takowym "połączeniem" zmiennych alcohol i volatile acidity, a także chlorides i citric acid. Owe twory nie są przypadkowe - z macierzy korelacji przytoczonej w eksploracji zbioru danych można było zaobserwować istotne wartości w przypadku obu par.

Jak prezentuje się nasz wykres?

Stosunkowo niska kwasowość lotna przy typowej zawartości alkoholu dla wina (przynajmniej w porównaniu z innymi obserwacjami) wpierw poskutkowała znaczącym wpływem na uznanie trunku za dobry jakościowo. Tym bardziej szanse na to zwiększyła całkowita zawartość dwutlenku siarki, choć na ocenę pozytywną negatywnie wpłynęły wartości kwasowości stałej, zawartości cząsteczek dwutlenku siarki niezwiązanych z innymi cząsteczkami i siarczanów. Biorąc pod uwagę wszystkie wymienione dotychczas czynniki, kluczowe okazało się kolumny odpowiadające za sole i kwas cytrynowy - te zaważyły o przewidywanej dobrej ocenie ekspertów.

Co zrobić, aby uzyskać wytłumaczalność każdej zmiennej decyzyjnej osobno? Okazuje się, że wystarczy zmienić domyślny parametr type na break_down. Można stąd wywnioskować, że standardowa implementacja nie zawiera tak naprawdę najprostszej wersji algorytmu, ale jej modyfikację - chociażby o efekt uzyskany wyżej.

I tutaj już rzeczywiście każda zmienna jest uwzględniona oddzielnie!

Co interesujące i bardzo zastanawiające... tu alcohol wylądował na samym dnie wytłumaczalności :O

Jak widać pakiet nie jest idealny - powyżej można zaobserwować błąd wizualizacji. Końcowy wynik predykcji (1) nie odpowiada temu, co sugeruje oś. A może po prostu zostało zwrócone prawdopodobieństwo, że wino zostało ocenione jako dobre, zamiast binarnego outputu? Tego nie wiem, ale prezentuje się niejasno na pewno.

A jak biblioteka i zawarte w niej algorytmy poradzą sobie z Shapley Values?

Shapley Values

Tu już wszystko gra! Największy wpływ na pozytywną predykcję okazały się mieć kwasowość lotna, zawartość dwutlenku siarki i moc alkoholowa. Rezultat ten odpowiada trzem najbardziej znaczącym zmiennom dla standardowej metody break down. Nic też dziwnego, że wszystkie te trzy kolumny mają korzystny wkład ku dobrej ocenie ekspertów - z czegoś do tej 1 trzeba dojść.

3-5. Obserwacja demompozycji innych obserwacji, w tym wskazanie pary o dwóch innych najważniejszych zmiennych oraz pary o dwóch takich samych, ale o innych wynikach

Break Down

Zobaczmy dekompozycję predykcji dla wszysktich obserwacji o indeksach bądących potęgami dwójki. Na tym etapie skupię się tylko na wersji bezparametrowej, przedstawionej na zajęciach. Tak jak w podpunkcie drugim, poskutkuje ona niekiedy "łączeniem" par kolumn w jedność [w kwestii wytłumaczalności].

Zbadam obserwację o numerach będących potęgami dwójki - a, tak dla losowości.

Dla każdego indeksu utwórz wykres dla bezparametrowego break down.

Wnioski

Zweryfikujmy jeszcze wynik dla drugiej poznanej na zajęciach metody.

Shapley Values

Wnioski końcowe